home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d8 / tlxtime3.arc / TIMESET.SLT < prev   
Text File  |  1990-10-13  |  7KB  |  277 lines

  1. main()
  2. {
  3.     int count,hi_hour,lo_hour,hi_min,lo_min,hi_sec,lo_sec,local_hr,t;
  4.     int error, err_test, y1, y2, y3, y4, y5, day, month, year;
  5.     int julian1, julian2, julian3, julian4, julian5, julian6, julian7, julian8;
  6.     str utc_hour[3],slocal_hr[3],set_dos_time[20]="time ",set_dos_date[20]="date ";
  7.     str juldatestr[10] = " ";
  8.     str geordatestr[10] = " ";
  9.     str monthstr[3], daystr[3], yearstr[4];
  10.     int integerdate;
  11.  
  12.     // Initialize variables
  13.     error=1;        //Indicates that time info is yet to be decoded properly
  14.     err_test=-1;    //Used to detect if time info is properly recieved
  15.     hi_hour=-1;     //Receives hi byte of hour time info
  16.     lo_hour=-1;     //Receives lo byte of hour time info
  17.     hi_min=-1;        //Recieves hi byte of minute time info
  18.     lo_min=-1;        //Receives lo byte of minute time info
  19.     hi_sec=-1;        //Receives hi byte of second time info
  20.     lo_sec=-1;        //Recieves lo byte of second time info
  21.     julian1=-1;
  22.     julian2=-1;
  23.     julian3=-1;
  24.     julian4=-1;
  25.     julian5=-1;
  26.     _alarm_on = 0;
  27.     _sound_on = 0;
  28.  
  29.     //Show opening TIMESET display
  30.     clear_scr();
  31.     prints("");
  32.     prints("Welcome to Timeset!!!");
  33.     prints("Now dialing The Naval Observertory for the time...");
  34.  
  35.     //Dial for the time
  36.     set_cparams(1200,0,8,1);
  37.     if(!dial("m1-202-653-0351",10))
  38.     {
  39.     prints("Can not contact the Naval Observatory! Aborting.");
  40.     tone(300,1);
  41.     return;        //After 10 tries can't reach the time.  Abort.
  42.     }
  43.  
  44.     // Decode the modified Julian time info received
  45.     while(error)
  46.     {
  47.  
  48.     if(!waitfor("UTC",10))
  49.       {
  50.         prints("Timeout error, aborting!");
  51.         hangup();
  52.         _alarm_on = 0;
  53.         _sound_on = 0;
  54.         return;    //Time info is not flowing right.  Abort.
  55.       }
  56.  
  57.     if(!waitfor("*",3))
  58.       {
  59.         prints("Timeout error, aborting!");
  60.         hangup();
  61.         _alarm_on = 0;
  62.         _sound_on = 0;
  63.         return;    //Time info is not flowing right.  Abort.
  64.       }
  65.     flushbuf();
  66.  
  67.     count=2;       //Amount of bytes to wait until date data should start
  68.     while(count)
  69.     {
  70.         while(cgetc()==-1)
  71.         {
  72.         }
  73.         count=count-1;
  74.     }
  75.     while(julian1==-1)
  76.     {
  77.         julian1=cgetc();
  78.     }
  79.     while(julian2==-1)
  80.     {
  81.         julian2=cgetc();
  82.     }
  83.     while(julian3==-1)
  84.     {
  85.         julian3=cgetc();
  86.     }
  87.     while(julian4==-1)
  88.     {
  89.         julian4=cgetc();
  90.     }
  91.     while(julian5==-1)
  92.     {
  93.         julian5=cgetc();
  94.     }
  95.  
  96.     count=5;       //Amount of bytes to wait until time data should start
  97.     while(count)
  98.     {
  99.         while(cgetc()==-1)
  100.         {
  101.         }
  102.         count=count-1;
  103.     }
  104.  
  105.     //Receive the time data
  106.     while(hi_hour==-1)
  107.     {
  108.         hi_hour=cgetc();
  109.     }
  110.     while(lo_hour==-1)
  111.     {
  112.         lo_hour=cgetc();
  113.     }
  114.     while(hi_min==-1)
  115.     {
  116.         hi_min=cgetc();
  117.     }
  118.     while(lo_min==-1)
  119.     {
  120.         lo_min=cgetc();
  121.     }
  122.     while(hi_sec==-1)
  123.     {
  124.         hi_sec=cgetc();
  125.     }
  126.     while(lo_sec==-1)
  127.     {
  128.         lo_sec=cgetc();
  129.     }
  130.     if(waitfor("UTC",2))
  131.     {
  132.      error = 0;
  133.     }
  134.     }
  135.  
  136.     //Start building the DOS set time command
  137.     strcat(utc_hour,hi_hour);
  138.     strcat(utc_hour,lo_hour);
  139.     local_hr=stoi(utc_hour);
  140.  
  141.     // ****************** Adjust UTC time to local time here *****************
  142.     //Pacific Daylight time is - 7 hours
  143.     //Pacific Standard time is - 8 hours
  144.  
  145.     local_hr=local_hr-7;
  146.  
  147.     // ***********************************************************************
  148.     // ***********************************************************************
  149.  
  150.     if(local_hr<0)
  151.     {
  152.     local_hr=local_hr+24;
  153.     }
  154.     itos(local_hr,slocal_hr);
  155.  
  156.     //Set DOS time
  157.     strcat(set_dos_time,slocal_hr);
  158.     strcat(set_dos_time,":");
  159.     strcat(set_dos_time,hi_min);
  160.     strcat(set_dos_time,lo_min);
  161.     strcat(set_dos_time,":");
  162.     strcat(set_dos_time,hi_sec);
  163.     strcat(set_dos_time,lo_sec);
  164.     dos(set_dos_time,0);
  165.  
  166.     clear_scr();
  167.     prints("");
  168.     prints("");
  169.     prints("");
  170.     prints("");
  171.     prints("");
  172.     prints("");
  173.     gotoxy(28,gety());
  174.     prints("SUCCESSFULLY set time");
  175.     //Hangup the modem and clear extra received data
  176.     hangup();
  177.     flushbuf();
  178.  
  179.     //Set DOS date
  180.     strcat(juldatestr,"24");  // Add epoch
  181.     strcat(juldatestr,julian1);
  182.     strcat(juldatestr,julian2);
  183.     strcat(juldatestr,julian3);
  184.     strcat(juldatestr,julian4);
  185.     strcat(juldatestr,julian5);
  186.  
  187. //       ** julian to calender date algorythiom  **
  188.  
  189. //  The algorythiom was obtained directly from the Naval Observertory
  190. //  and should be valid for the next 140 years.
  191. //  if you use it elsewhere be careful of the integer roundoff,
  192. //  the precedence's are critical therefore the () are inserted
  193. //  to clarify them and prevent mistranslation by the reader.
  194.  
  195.     integerdate = stoi(juldatestr);
  196.     y1 = integerdate + 68569;
  197.     y2 = (4 * y1) / 146097;
  198.     y3 = y1 - (((146097 * y2) + 3) / 4);
  199.     year = (4000 * (y3 + 1)) / 1461001;
  200.     y4 = (y3 - ((1461 * year) / 4)) + 31;
  201.     month = (80 * y4) / 2447;
  202.     day = y4 - ((2447 * month) / 80);
  203.     day = day + 1;
  204.     y5 = month / 11;
  205.     month = month + 2 - (12 * y5);
  206.     year = 100 * (y2 - 49) + year + y5;
  207.  
  208.  
  209.     itos(integerdate, geordatestr );
  210.     itos(month, monthstr );
  211.     itos(day, daystr );
  212.     itos(year, yearstr );
  213.  
  214.     //Set DOS date
  215.     strcat(set_dos_date,monthstr);
  216.     strcat(set_dos_date,"-");
  217.     strcat(set_dos_date,daystr);
  218.     strcat(set_dos_date,"-");
  219.     strcat(set_dos_date,yearstr);
  220.     dos(set_dos_date,0);
  221.  
  222.  
  223.     //Display current time continuosly
  224.     _scr_chk_key=0;     //Disable keyboard scan so inkey will work properly
  225.     cursor_onoff(0);     //Disable the cursor because it is annoying
  226.     clear_scr();
  227.     prints("");
  228.     prints("");
  229.     prints("");
  230.     printsc("julian date = ");
  231.     prints(juldatestr);
  232.     prints("");
  233.     prints("");
  234.     printsc("month = ");
  235.     prints(monthstr);
  236.     printsc("day = ");
  237.     prints(daystr);
  238.     printsc("year = ");
  239.     prints(yearstr);
  240.     prints("");
  241.     prints("");
  242.     prints("");
  243.     prints("Press esc to exit");
  244.     prints("");
  245.     printsc("The time received from the Naval Observatory is         adjusted to local time.");
  246.  
  247.     while(1)
  248.     {
  249.     gotoxy(48,gety());
  250.     t=curtime();
  251.     if(thour(t)<10)
  252.     {
  253.      printsc("0");
  254.     }
  255.     printn(thour(t));
  256.     if(tmin(t)<10)
  257.     {
  258.      printsc("0");
  259.     }
  260.     printn(tmin(t));
  261.     printsc(".");
  262.     if(tsec(t)<10)
  263.     {
  264.      printsc("0");
  265.     }
  266.     printn(tsec(t));
  267.     if(inkey()==27)
  268.     {
  269.         break;    //Exit if the esc key is pressed
  270.     }
  271.     }
  272.  
  273.     clear_scr();
  274.     prints("Thank you for using TIMESET!");
  275.     exittelix(0, 1);
  276. }
  277.